package course.d1221;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/*
    Map<K key,V value>接口中的方法：
1.V put(K key,V value);
a.先求出添加key的hash值， 和之前添加的所有key的hash值进行比较， 如果都不相同， 直接添加到集合中
b.如果和之前录入的所有key的hash值有一个相同，则比较地址值，
如果地址值相同， 就把value替换，返回替换前的value
如果不相同，直接使用equals方法，比较两个对象的内容是否相同，    不相同，则直接添加到集合中
                                                      相同，则把value替换，返回替换前的value值
2.V remove(Object key);
如果存在一个键的映射关系，则将其从此映射中移除（可选操作）。
更确切地讲，如果此映射包含从满足 (key==null ? k==null :key.equals(k)) 的键 k 到值 v 的映射关系，则移除该映射关系。
（该映射最多只能包含一个这样的映射关系。）
返回：以前与key关联的值，如果没有 key 的映射关系，则返回 null；

 */

public class p1 {
    public static void main(String[] args) {
        Map<Student,String> map = new HashMap<>();
        map.put(new Student(),"1");
        map.put(new Student(),"1");
        map.put(new Student("12","tom"),"1");

        String remove = map.remove(new Student());
        System.out.println(remove);

    }
}
class Student{
    private String  stuId;
    private String  name;

    public Student(String stuId, String name) {
        this.stuId = stuId;
        this.name = name;
    }

    public Student() {
    }

    public String getStuId() {
        return stuId;
    }

    public void setStuId(String stuId) {
        this.stuId = stuId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return Objects.equals(stuId, student.stuId) &&
                Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(stuId, name);
    }

    @Override
    public String toString() {
        return "Student{" +
                "stuId='" + stuId + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}